package com.gxnu.edu.cn.ttxxt.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gxnu.edu.cn.ttxxt.entity.ChatGroups;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface ChatGroupRepository extends BaseMapper<ChatGroups> {

    /**
     * 根据创建者ID查询群组列表
     * @param creatorId 创建者用户ID
     * @return 群组列表
     */
    List<ChatGroups> findByCreatorId(@Param("creatorId") Long creatorId);

    /**
     * 根据用户ID查询用户加入的所有群组
     * @param userId 用户ID
     * @return 群组列表
     */
    @Select("select * from chat_groups where creator_id=#{userId}")
    List<ChatGroups> selectByUserId(@Param("userId") Long userId);

    /**
     * 删除群组
     * @param groupId 群组ID
     * @return 影响行数
     */
    int delete(@Param("groupId") Long groupId);

    /**
     * 根据群组名称模糊查询
     * @param groupName 群组名称
     * @return 群组列表
     */
    List<ChatGroups> searchByGroupName(@Param("groupName") String groupName);

    /**
     * 更新群组信息
     * @param group 群组实体
     * @return 影响行数
     */
    int updateGroupInfo(ChatGroups group);

    @Select("select * from chat_groups where group_name =#{groupName} ")
    ChatGroups selectByGroupName(String groupName);

    Long save(ChatGroups group);

    @Select("select * from chat_groups where group_id =#{groupId} ")
    ChatGroups searchByGroupId(Long groupId);

    @Select("SELECT COUNT(*) > 0 FROM group_members WHERE user_id = #{userId} AND group_id = #{groupId}")
    boolean existsByUserIdAndGroupId(Long userId, Long groupId);

    @Select("SELECT COUNT(*) > 0 FROM chat_groups WHERE  group_id = #{groupId}")
    boolean selectBygroupIdd(Long groupId);
}